﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using acessaDB;
using Frame;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using Estrutura;


namespace Banco
{

    /// <summary>
    /// Summary description for BD_Aluno_material
    /// </summary>
    public class BD_Aluno_material
    {
        #region variaveis_globais

        acessaDB.conectaDBMSSQLServer sqlServer = new conectaDBMSSQLServer();
        string conectionString = System.Configuration.ConfigurationManager.AppSettings["SQLServerConnectionLocal"];
        string usuario = string.Empty;

        #endregion

        #region construtor

        public BD_Aluno_material()
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["SQLServerConnectionProd"];
        }
        public BD_Aluno_material(string usu_Login)
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["SQLServerConnectionProd"];
            usuario = usu_Login;
        }

        #endregion

        #region metodos

        public System.Data.DataSet _retorna_Aluno_material(
                                                string ALUNO_MATERIAL_ID,
                                                string ALUNO_ID,
                                                string MATERIAL_ID,
                                                string ALM_QTADIQUIRIDA,
                                                string ALM_DTADESAO,
                                                string ALM_STEXCLUIDO
                                                )
        {

            if (string.IsNullOrEmpty(ALUNO_MATERIAL_ID)) ALUNO_MATERIAL_ID = "''";
            if (string.IsNullOrEmpty(ALUNO_ID)) ALUNO_ID = "''";
            if (string.IsNullOrEmpty(MATERIAL_ID)) MATERIAL_ID = "''";
            if (string.IsNullOrEmpty(ALM_QTADIQUIRIDA)) ALM_QTADIQUIRIDA = "''";
            if (string.IsNullOrEmpty(ALM_DTADESAO)) ALM_DTADESAO = "''";
            if (string.IsNullOrEmpty(ALM_STEXCLUIDO)) ALM_STEXCLUIDO = "''";

            string sql = "SELECT " +
                                  "ALUNO_MATERIAL.ALUNO_MATERIAL_ID, " +
                                  "ALUNO_MATERIAL.ALUNO_ID, " +
                                  "ALUNO_MATERIAL.MATERIAL_ID, " +
                                  "ALUNO_MATERIAL.ALM_QTADIQUIRIDA, " +
                                  "ALUNO_MATERIAL.ALM_DTADESAO, " +
                                  "ALUNO_MATERIAL.ALM_STEXCLUIDO " +
                            "FROM ALUNO_MATERIAL " +
                            "LEFT JOIN MATERIAL ON MATERIAL.MATERIAL_ID = ALUNO_MATERIAL.MATERIAL_ID " +
                            "LEFT JOIN ALUNO ON ALUNO.ALUNO_ID = ALUNO_MATERIAL.ALUNO_ID " +
                            "WHERE " +
                            "      (ALUNO_MATERIAL.ALUNO_MATERIAL_ID = " + ALUNO_MATERIAL_ID + "  OR " + ALUNO_MATERIAL_ID + " = '') AND " +
                            "      (ALUNO_MATERIAL.ALUNO_ID = " + ALUNO_ID + "  OR " + ALUNO_ID + " = '') AND " +
                            "      (ALUNO_MATERIAL.MATERIAL_ID = " + MATERIAL_ID + "  OR " + MATERIAL_ID + " = '') AND " +
                            "      (ALUNO_MATERIAL.ALM_QTADIQUIRIDA = " + ALM_QTADIQUIRIDA + "  OR " + ALM_QTADIQUIRIDA + " = '') AND " +
                            "      (ALUNO_MATERIAL.ALM_DTADESAO = " + ALM_DTADESAO + "  OR " + ALM_DTADESAO + " = '') AND " +
                            "      (ALUNO_MATERIAL.ALM_STEXCLUIDO = " + ALM_STEXCLUIDO + "  OR " + ALM_STEXCLUIDO + " = '') ";

            return sqlServer.retornaDataSet(sql, conectionString);

        }


        public List<ES_Aluno_material> _obter_Aluno_material(
                                                string ALUNO_MATERIAL_ID,
                                                string ALUNO_ID,
                                                string MATERIAL_ID,
                                                string ALM_QTADIQUIRIDA,
                                                string ALM_DTADESAO,
                                                string ALM_STEXCLUIDO
                                                )
        {

            if (string.IsNullOrEmpty(ALUNO_MATERIAL_ID)) ALUNO_MATERIAL_ID = "''"; else ALUNO_MATERIAL_ID = Util.retonarAspas(ALUNO_MATERIAL_ID + " % ");
            if (string.IsNullOrEmpty(ALUNO_ID)) ALUNO_ID = "''"; else ALUNO_ID = Util.retonarAspas(ALUNO_ID + " % ");
            if (string.IsNullOrEmpty(MATERIAL_ID)) MATERIAL_ID = "''"; else MATERIAL_ID = Util.retonarAspas(MATERIAL_ID + " % ");
            if (string.IsNullOrEmpty(ALM_QTADIQUIRIDA)) ALM_QTADIQUIRIDA = "''"; else ALM_QTADIQUIRIDA = Util.retonarAspas(ALM_QTADIQUIRIDA + " % ");
            if (string.IsNullOrEmpty(ALM_DTADESAO)) ALM_DTADESAO = "''"; else ALM_DTADESAO = Util.retonarAspas(ALM_DTADESAO + " % ");
            if (string.IsNullOrEmpty(ALM_STEXCLUIDO)) ALM_STEXCLUIDO = "''"; else ALM_STEXCLUIDO = Util.retonarAspas(ALM_STEXCLUIDO + " % ");

            string sql = "SELECT " +
                                  "ALUNO_MATERIAL.ALUNO_MATERIAL_ID, " +
                                  "ALUNO_MATERIAL.ALUNO_ID, " +
                                  "ALUNO_MATERIAL.MATERIAL_ID, " +
                                  "ALUNO_MATERIAL.ALM_QTADIQUIRIDA, " +
                                  "ALUNO_MATERIAL.ALM_DTADESAO, " +
                                  "ALUNO_MATERIAL.ALM_STEXCLUIDO " +
                            "FROM ALUNO_MATERIAL " +
                            "LEFT JOIN MATERIAL ON MATERIAL.MATERIAL_ID = ALUNO_MATERIAL.MATERIAL_ID " +
                            "LEFT JOIN ALUNO ON ALUNO.ALUNO_ID = ALUNO_MATERIAL.ALUNO_ID " +
                            "WHERE " +
                            "      (ALUNO_MATERIAL.ALUNO_MATERIAL_ID = " + ALUNO_MATERIAL_ID + "  OR " + ALUNO_MATERIAL_ID + " = '') AND " +
                            "      (ALUNO_MATERIAL.ALUNO_ID = " + ALUNO_ID + "  OR " + ALUNO_ID + " = '') AND " +
                            "      (ALUNO_MATERIAL.MATERIAL_ID = " + MATERIAL_ID + "  OR " + MATERIAL_ID + " = '') AND " +
                            "      (ALUNO_MATERIAL.ALM_QTADIQUIRIDA = " + ALM_QTADIQUIRIDA + "  OR " + ALM_QTADIQUIRIDA + " = '') AND " +
                            "      (ALUNO_MATERIAL.ALM_DTADESAO = " + ALM_DTADESAO + "  OR " + ALM_DTADESAO + " = '') AND " +
                            "      (ALUNO_MATERIAL.ALM_STEXCLUIDO = " + ALM_STEXCLUIDO + "  OR " + ALM_STEXCLUIDO + " = '') ";

            List<ES_Aluno_material> lista = new List<ES_Aluno_material>();
            SqlConnection sqlConexao = new SqlConnection(conectionString);
            SqlDataReader dr = sqlServer.retornaDataReader(sql, conectionString, sqlConexao);
            try
            {
                while (dr.Read())
                {
                    ES_Aluno_material item = new ES_Aluno_material();
                    item.ALUNO_MATERIAL_ID = dr["ALUNO_MATERIAL_ID"].ToString();
                    item.ALUNO_ID = dr["ALUNO_ID"].ToString();
                    item.MATERIAL_ID = dr["MATERIAL_ID"].ToString();
                    item.ALM_QTADIQUIRIDA = dr["ALM_QTADIQUIRIDA"].ToString();
                    item.ALM_DTADESAO = dr["ALM_DTADESAO"].ToString();
                    item.ALM_STEXCLUIDO = dr["ALM_STEXCLUIDO"].ToString();
                    lista.Add(item);

                }
                return lista;
            }
            finally
            {
                sqlServer.fecharConexao(sqlConexao);
            }
        }

        public List<ES_Aluno_material> _obter_Material(                                                
                                                        string ALUNO_ID,
                                                        string MATERIAL_ID
                                                        )
        {

            //Validar Inserção de Aluno
            if (ALUNO_ID == "NEW")
                return new List<ES_Aluno_material>();

            if (string.IsNullOrEmpty(ALUNO_ID)) ALUNO_ID = "0";
            if (string.IsNullOrEmpty(MATERIAL_ID)) MATERIAL_ID = "0";
            if (ALUNO_ID == "0" && MATERIAL_ID == "0")
                return new List<ES_Aluno_material>();

            string sql = "SELECT    AM.ALUNO_MATERIAL_ID, "+
                        "           AM.ALUNO_ID,  "+
	                     "          AM.MATERIAL_ID,  "+
	                     "          AM.ALM_DTADESAO,  "+
	                     "          AM.ALM_QTADIQUIRIDA, "+
	                     "          M.MATERIAL_MODALIDADE_ID,  "+
	                     "          MD.MMD_DESCRICAO, "+
	                     "          M.MTR_DESCRICAO, "+
	                     "          A.PESSOA_ID,  "+
                         "          DBO.FN_ALUNO_MATRICULAS (A.ALUNO_ID) MATRICULAS_ALUNO, "+
	                     "          P.PES_NOME "+
                         "FROM ALUNO_MATERIAL AM "+
                         "INNER JOIN ALUNO A ON (A.ALUNO_ID = AM.ALUNO_ID) "+
                         "INNER JOIN MATERIAL M ON (M.MATERIAL_ID = AM.MATERIAL_ID) "+
                         "INNER JOIN MATERIAL_MODALIDADE MD ON (M.MATERIAL_MODALIDADE_ID = MD.MATERIAL_MODALIDADE_ID) " +
                         "INNER JOIN PESSOA P ON (P.PESSOA_ID = A.PESSOA_ID)"+                         
                         "WHERE " +
                         "      (AM.ALUNO_ID = " + ALUNO_ID + "  OR " + ALUNO_ID + " = '') AND " +
                         "      (AM.MATERIAL_ID = " + MATERIAL_ID + "  OR " + MATERIAL_ID + " = 0)  ";

            List<ES_Aluno_material> lista = new List<ES_Aluno_material>();
            SqlConnection sqlConexao = new SqlConnection(conectionString);
            SqlDataReader dr = sqlServer.retornaDataReader(sql, conectionString, sqlConexao);
            try
            {
                while (dr.Read())
                {
                    ES_Aluno_material item = new ES_Aluno_material();
                    item.ALUNO_MATERIAL_ID = dr["ALUNO_MATERIAL_ID"].ToString();
                    item.ALUNO_ID = dr["ALUNO_ID"].ToString();
                    item.MATERIAL_ID = dr["MATERIAL_ID"].ToString();
                    item.ALM_DTADESAO = dr["ALM_DTADESAO"].ToString().Replace("00:00:00", "").Trim();
                    item.ALM_QTADIQUIRIDA = dr["ALM_QTADIQUIRIDA"].ToString();
                    item.MATERIAL_MODALIDADE_ID = dr["MATERIAL_MODALIDADE_ID"].ToString();
                    item.MMD_DESCRICAO = dr["MMD_DESCRICAO"].ToString();
                    item.MTR_DESCRICAO = dr["MTR_DESCRICAO"].ToString();
                    item.PESSOA_ID = dr["PESSOA_ID"].ToString();
                    item.MATRICULAS_ALUNO = dr["MATRICULAS_ALUNO"].ToString();
                    item.PES_NOME = dr["PES_NOME"].ToString();
                    lista.Add(item);

                }
                return lista;
            }
            finally
            {
                sqlServer.fecharConexao(sqlConexao);
            }
        }

        public ES_Aluno_material _obter_Aluno_material_by_id(
                                                                string ALUNO_MATERIAL_ID,
                                                                string ALUNO_ID,
                                                                string MATERIAL_ID
                                                            )
        {

            if (string.IsNullOrEmpty(ALUNO_MATERIAL_ID)) ALUNO_MATERIAL_ID = "0";

            string sql = "SELECT " +
                                  "ALUNO_MATERIAL.ALUNO_MATERIAL_ID, " +
                                  "ALUNO_MATERIAL.ALUNO_ID, " +
                                  "ALUNO_MATERIAL.MATERIAL_ID, " +
                                  "ALUNO_MATERIAL.ALM_QTADIQUIRIDA, " +
                                  "ALUNO_MATERIAL.ALM_DTADESAO, " +
                                  "ALUNO_MATERIAL.ALM_STEXCLUIDO " +
                            "FROM ALUNO_MATERIAL " +
                            "LEFT JOIN MATERIAL ON MATERIAL.MATERIAL_ID = ALUNO_MATERIAL.MATERIAL_ID " +
                            "LEFT JOIN ALUNO ON ALUNO.ALUNO_ID = ALUNO_MATERIAL.ALUNO_ID " +
                            "WHERE " +
                            "      (ALUNO_MATERIAL.ALUNO_MATERIAL_ID = " + ALUNO_MATERIAL_ID + "  OR " + ALUNO_MATERIAL_ID + " = 0) AND "+
                            "      (ALUNO_MATERIAL.MATERIAL_ID = " + MATERIAL_ID + "  OR " + MATERIAL_ID + " = 0) AND " +
                            "      (ALUNO_MATERIAL.ALUNO_ID = " + ALUNO_ID + "  OR " + ALUNO_ID + " = 0) ";

            ES_Aluno_material item = new ES_Aluno_material();
            SqlConnection sqlConexao = new SqlConnection(conectionString);
            SqlDataReader dr = sqlServer.retornaDataReader(sql, conectionString, sqlConexao);
            try
            {
                while (dr.Read())
                {
                    item.ALUNO_MATERIAL_ID = dr["ALUNO_MATERIAL_ID"].ToString();
                    item.ALUNO_ID = dr["ALUNO_ID"].ToString();
                    item.MATERIAL_ID = dr["MATERIAL_ID"].ToString();
                    item.ALM_QTADIQUIRIDA = dr["ALM_QTADIQUIRIDA"].ToString();
                    item.ALM_DTADESAO = dr["ALM_DTADESAO"].ToString();
                    item.ALM_STEXCLUIDO = dr["ALM_STEXCLUIDO"].ToString();

                }
                return item;
            }
            finally
            {
                sqlServer.fecharConexao(sqlConexao);
            }
        }


        public void _inserir_Aluno_material(
                                                string ALUNO_MATERIAL_ID,
                                                string ALUNO_ID,
                                                string MATERIAL_ID,
                                                string ALM_QTADIQUIRIDA,
                                                string ALM_DTADESAO,
                                                string ALM_STEXCLUIDO
                                                )
        {

            string sql = " INSERT INTO ALUNO_MATERIAL " +
                         "      ( " +
                         "          ALUNO_ID, " +
                         "          MATERIAL_ID, " +
                         "          ALM_QTADIQUIRIDA, " +
                         "          ALM_DTADESAO, " +
                         "          ALM_STEXCLUIDO  " +
                 "      )" +
                 "  VALUES " +
                 "      ( " +
                              Util.retonarAspas(ALUNO_ID, true) + ", " +
                              Util.retonarAspas(MATERIAL_ID, true) + ", " +
                              Util.retonarAspas(ALM_QTADIQUIRIDA, true) + ", " +
                              Util.retonarAspas(Util.formataData(ALM_DTADESAO), true) + ", " +
                              (string.IsNullOrEmpty(ALM_STEXCLUIDO)? "0":ALM_STEXCLUIDO) +
                 "      )";
            try
            {
                sqlServer._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _atualizar_Aluno_material(
                                                string ALUNO_MATERIAL_ID,
                                                string ALUNO_ID,
                                                string MATERIAL_ID,
                                                string ALM_QTADIQUIRIDA,
                                                string ALM_DTADESAO,
                                                string ALM_STEXCLUIDO
                                                )
        {

            string sql = " UPDATE ALUNO_MATERIAL SET " +
                         "      ALUNO_ID = " + Util.retonarAspas(ALUNO_ID, true) + ", " +
                         "      MATERIAL_ID = " + Util.retonarAspas(MATERIAL_ID, true) + ", " +
                         "      ALM_QTADIQUIRIDA = " + Util.retonarAspas(ALM_QTADIQUIRIDA, true) + ", " +
                         "      ALM_DTADESAO = " + Util.retonarAspas(ALM_DTADESAO, true) + ", " +
                         "      ALM_STEXCLUIDO = " + (string.IsNullOrEmpty(ALM_STEXCLUIDO) ? "0" : ALM_STEXCLUIDO) +
                         " WHERE ALUNO_MATERIAL_ID =  " + ALUNO_MATERIAL_ID;
            try
            {
                sqlServer._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _excluir_Aluno_material(string ALUNO_MATERIAL_ID)
        {
            //Executar PROCEDURE que devolve quantidade solicitada ao maerial, antes de excluir o registro

            string sql = "EXECUTE [dbo].[SP_REMOVE_ALUNO_MATERIAL] " + ALUNO_MATERIAL_ID;
            try
            {
                sqlServer._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        #endregion
    }
}
